﻿-- =============================================
-- Author:		Gerardo Mtz. Hdz.
-- Create date: 11/03/2012
-- Description:	Inserta o modifica un registro de la tabla de doctores
-- =============================================
CREATE PROCEDURE [dbo].[spGuardaDoctor](
	@pnIdDoctor		INT,
	@pnIdLaboratorio INT,
	@psNombre		VARCHAR(200),
	@psDireccion	VARCHAR(500),
	@psTelefono		VARCHAR(20),
	@pnIdUsuarioMod INT,
	@psIpMod		VARCHAR(15),
	@pnIdSucursal	INT
)
AS
BEGIN
	SET NOCOUNT ON;
	DECLARE @nFolio BIGINT,
			@nIdUsuario INT,
			@sUserName VARCHAR(200)
		
	IF @pnIdDoctor IS NULL
	BEGIN
		--EXEC spObtenerFolio 1, @nFolio OUT
		--SELECT	@nFolio = ISNULL(MAX(IdDoctor),0) + 1 FROM dbo.CatDoctor WHERE IdLaboratorio = @pnIdLaboratorio AND IdSucursal = @pnIdSucursal
		EXEC dbo.spSequence	@pnIdLaboratorio = 1, @pnIdSucursal = 1, @psTabla = 'CatDoctor', @psCampoFolio = 'IdDoctor', @pnNextValue = @nFolio OUT
		INSERT INTO CatDoctor(IdDoctor, IdLaboratorio, Nombre, Direccion, Telefono, FechaMod, IdUsuarioMod, IpMod, IdSucursal)
		VALUES(@nFolio,@pnIdLaboratorio, @psNombre, @psDireccion, @psTelefono, GETDATE(), @pnIdUsuarioMod, @psIpMod, @pnIdSucursal);
		
		SELECT @pnIdDoctor = @nFolio;
		SELECT @sUserName = 'Doc' + CONVERT(VARCHAR(30), @pnIdLaboratorio) + RIGHT('000000' + CONVERT(VARCHAR(10),@pnIdDoctor),6)
		EXEC spInsertaUsuario @nIdUsuario OUT, @pnIdLaboratorio, @sUserName, @pnIdSucursal
	
		INSERT INTO RelUsuarioDoctor(
			IdUsuario,
			IdDoctor,
			IdLaboratorio,
			IdSucursal)
		VALUES(
			@nIdUsuario,
			@pnIdDoctor,
			@pnIdLaboratorio,
			@pnIdSucursal
			)
	END
	ELSE
	BEGIN
		UPDATE	CatDoctor
		SET		Nombre		= @psNombre,
				Direccion	= @psDireccion,
				Telefono	= @psTelefono,
				FechaMod	= GETDATE(),
				IdUsuarioMod	= @pnIdUsuarioMod,
				IpMod		= @psIpMod
		WHERE	IdDoctor	= @pnIdDoctor
		AND		IdLaboratorio = @pnIdLaboratorio
		AND		IdSucursal	= @pnIdSucursal
	END
		
	SELECT @pnIdDoctor IdDoctor
	
	SET NOCOUNT OFF;
END